home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
The 640 MEG Shareware Studio 2
/
The 640 Meg Shareware Studio CD-ROM Volume II (Data Express)(1993).ISO
/
basic
/
apb17.zip
/
ATTACH.ASM
< prev
next >
Wrap
Assembly Source File
|
1990-12-20
|
2KB
|
139 lines
Title Routine to attach an interrupt vector to a Trap channel
Page 60,130
Comment *
Created 11-12-1987 k. murray
Updates:
None.
Usage:
Attach IntNo%,TrapChannelNo%
*
; Macro to define the trap channel handlers
TrapH Macro Ch
Trap&Ch:
Push Ax
Push Dx
if Ch LE 16
Xor Dx,Dx ; high order is zero
Mov Ax,1 Shl (Ch-1)
else
Xor Ax,Ax
Mov Dx,1 Shl (Ch-17)
endif
Jmp IntCom
Endm
Cseg Segment byte public 'Code'
Assume Cs:Cseg,Ds:nothing,Es:nothing
Comment *
Stack Frame:
Bp+8 Interrupt #
Bp+6 Trap Channel # adr.
Bp+4 Return Segment
Bp+2 Return Offset
Bp+0 Saved Bp
*
Start:
Attach proc far
Push Bp
Mov Bp,Sp
Mov Cs:SvDs,Ds ; save data segment
Mov Bx,[Bp+6] ; get adr. of channel #
Mov Bx,[Bx] ; Get the channel #
Dec Bx ; make relative to zero
And Bx,01fh ; keep only lower 5 bits
Shl Bx,1 ; mult by 2
Mov Dx,Cs:[Bx+offset TrapHList] ; get adr. for desired trap #
Mov Bx,[Bp+8] ; get adr. of interrupt #
Mov Ax,[Bx] ; Get interrupt # in Al
Mov Ah,25h ; Ah=Set interrupt vector call
Push Ds
Mov Bx,Cs
Mov Ds,Bx ; Ds:Dx=pointer to interrupt handler
Int 21h ; set vector
Pop Ds
Pop Bp
Ret 2*2 ; remove 2 parameters
Attach endp
SvDs Dw 0
TrapHList Dw offset Trap1
Dw offset Trap2
Dw offset Trap3
Dw offset Trap4
Dw offset Trap5
Dw offset Trap6
Dw offset Trap7
Dw offset Trap8
Dw offset Trap9
Dw offset Trap10
Dw offset Trap11
Dw offset Trap12
Dw offset Trap13
Dw offset Trap14
Dw offset Trap15
Dw offset Trap16
Dw offset Trap17
Dw offset Trap18
Dw offset Trap19
Dw offset Trap20
Dw offset Trap21
Dw offset Trap22
Dw offset Trap23
Dw offset Trap24
Dw offset Trap25
Dw offset Trap26
Dw offset Trap27
Dw offset Trap28
Dw offset Trap29
Dw offset Trap30
Dw offset Trap31
Dw offset Trap32
IntCom:
Push Ds
Mov Ds,Cs:SvDs
Or Ds:[0],Ax
Or Ds:[2],Dx ; Set trap bit
Pop Ds
Pop Dx
Pop Ax
Iret ; return from interrupt
TrapH 1
TrapH 2
TrapH 3
TrapH 4
TrapH 5
TrapH 6
TrapH 7
TrapH 8
TrapH 9
TrapH 10
TrapH 11
TrapH 12
TrapH 13
TrapH 14
TrapH 15
TrapH 16
TrapH 17
TrapH 18
TrapH 19
TrapH 20
TrapH 21
TrapH 22
TrapH 23
TrapH 24
TrapH 25
TrapH 26
TrapH 27
TrapH 28
TrapH 29
TrapH 30
TrapH 31
TrapH 32
Cseg Ends
End Start